package com.sg.file.common.conf;

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.List;

/**
 * 文件默认配置
 * Created by asus on 2018/7/7.
 */
@Getter
@Setter
@Configuration
@ConfigurationProperties(prefix="file")
public class FileConfiguration {
    //路径配置
    private PathConf path;
    //是否保存到数据库
    private boolean saveInDB;
    //各文件分类的转化信息
    private List<TransformInfo> transformInfos;
    //文件分类
    private List<String> type;

    /**
     * 路径配置
     */
    @Getter
    @Setter
    public static class PathConf {
        //文件基础路径
        private String base;
        //默认项目名称文件夹名称
        private String projectDirName;
    }

    /**
     * 转换信息
     */
    @Getter
    @Setter
    public static class TransformInfo {
        //文件类型
        private String type;
        //是否自动转换
        private boolean autoTransformEnable = false;
        //默认转换的文件类型
        private String formatType;
        //保存路径
        private String saveDirName;
        //转换实现类
        private String transformClass;
        //是否需要自动转换缩率图
        private boolean autoTransformThumbnail = false;
        //默认缩略图格式
        private String thumbnailType = "png";
        //缩略图转换实现类
        private String transformThumbnailClass;
        /**
         * id前缀
         * 10开头:其他类型
         * 20：图片
         * 30：视频
         * 40：音频
         * 50：文本文件
         * 61：word文档
         * 62：Excel
         * 70：pdf
         */
        private String idPrefix="10";
    }

    /**
     * 根据文件类型（image,video...）获取是否需要自动转换的配置
     * @param fileType
     * @return
     */
    public boolean getAutoTransform(String fileType){
        for(TransformInfo transformInfo:transformInfos){
            if(transformInfo.getType().equals(fileType)){
                return transformInfo.autoTransformEnable;
            }
        }
        return false;
    }

    /**
     * 根据文件类型（image,video...）获取是否需要自动转换缩略图
     * @param fileType
     * @return
     */
    public boolean getAutoTransformThumbnail(String fileType){
        for(TransformInfo transformInfo:transformInfos){
            if(transformInfo.getType().equals(fileType)){
                return transformInfo.autoTransformThumbnail;
            }
        }
        return false;
    }

    /**
     * 根据文件类型（image,video...）获取默认转换文件的后缀
     * @param fileType
     * @return
     */
    public String getDefaultTransformSuffix(String fileType){
        for(TransformInfo transformInfo:transformInfos){
            if(transformInfo.getType().equals(fileType)){
                return transformInfo.getFormatType();
            }
        }
        return "";
    }

    /**
     * 根据文件类型（image,video...）获取默认缩略文件的后缀
     * @param fileType
     * @return
     */
    public String getDefaultTransformThumbnailSuffix(String fileType){
        for(TransformInfo transformInfo:transformInfos){
            if(transformInfo.getType().equals(fileType)){
                return transformInfo.getThumbnailType();
            }
        }
        return "";
    }

    /**
     * 根据文件类型（image,video...）获取默认转化类
     * @param fileType
     * @return
     */
    public String getDefaultTransformClass(String fileType){
        for(TransformInfo transformInfo:transformInfos){
            if(transformInfo.getType().equals(fileType)){
                return transformInfo.getTransformClass();
            }
        }
        return "";
    }
    /**
     * 根据文件类型（image,video...）获取默认转化类
     * @param fileType
     * @return
     */
    public String getDefaultTransformThumbnailClass(String fileType){
        for(TransformInfo transformInfo:transformInfos){
            if(transformInfo.getType().equals(fileType)){
                return transformInfo.getTransformThumbnailClass();
            }
        }
        return "";
    }

}
